/*
//  mycalc.c
//  EECS22 Lab
//  Calculator
//
//  Created by Daniel Diaz on 1/11/12.
//  
//  Copyright 2012 UCI. All rights reserved.
*/
	
#include <string.h>
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
#include <stdlib.h>
#include <math.h>

int main()
{

	char *cp;
	int acc = 0;
	int ret = 0;
	char stringtmp1[20];
	char stringtmp2[20];
	char stringtmp3[20];
	char string1[100];
	char string2[100];
	char string3[100];
	int d;
	int y;
	long int x = 0;
	float acc1 = 1;
	
	int counter = 0;
	int counter2 = 0;
	int counter3 = 0;
	int num1, num2;
	int num3;

	int testReg,testReg2, testReg3;
	int A=0,B=0,C=0;
	int D=0,E=0,F=0;
	int G=0,H=0,I=0;
	int J=0,K=0,L=0;
	int M=0,N=0,O=0;
	int P=0,Q=0,R=0;
	int S=0,T=0,U=0;
	int V=0,W=0,X=0;
	int Y=0,Z=0;

	printf("%d: ", acc);
	while(1) 
	{
		cp = readline(" ");
		add_history(cp);
		ret = sscanf(cp,"%s %s %s", &stringtmp1, &stringtmp2, &stringtmp3);
		counter = 0;
		counter2 = 0;

		while(stringtmp1[counter] != '\0')
       		{
			testReg = stringtmp1[0];
           		if (stringtmp1[0] == '+' && stringtmp1[1] != '\0')
           		{
               			x = strlen(stringtmp1);
               			for (y = 1; y <= x; y++)
               			{   
	                   		string1[y-1] = stringtmp1[y];
        	           		d = atoi(string1);
               			}
               		num1 = d;
           		}
           
           		if (stringtmp1[0] == '-' && stringtmp1[1] != '\0')
           		{
              			x = strlen(stringtmp1);
               			for (y = 1; y <= x; y++)
               			{    
                   			string1[y-1] = stringtmp1[y];
                   			d = atoi(string1);    
               			}
               		num1 = -d;
           		}

			if ((stringtmp1[0] == '0' || stringtmp1[0] == '1' ||stringtmp1[0] ==  
			'2' || stringtmp1[0] == '3' ||stringtmp1[0] == '4' ||stringtmp1[0] == '5' ||stringtmp1[0] == '6' 
			||stringtmp1[0] == '7' ||stringtmp1[0] == '8' ||stringtmp1[0] == '9') && stringtmp1[1] != '\0')
	               {
        	           x = strlen(stringtmp1);
                	   for (y = 0; y <= x; y++)
                   	   {
                   
                   		string1[y] = stringtmp1[y];
                   		num1 = atoi(string1);
                   
                   	  }
              
               		}	

			if ((stringtmp1[0] == '0' || stringtmp1[0] == '1' ||stringtmp1[0] ==  '2' || stringtmp1[0] == '3' ||stringtmp1[0] == '4' ||stringtmp1[0] == '5' || stringtmp1[0] == '6' 
||stringtmp1[0] == '7' ||stringtmp1[0] == '8' ||stringtmp1[0] == '9') && stringtmp1[1] == '\0')
                       {
                                num1 = atoi(stringtmp1);

                        }
           
           		if (stringtmp1[0] == '+' && stringtmp1[1] == '\0')
           		{
				num1 = abs(num1);
           		}
           
           		if (stringtmp1[0] == '-' && stringtmp1[1] == '\0')
           		{
				num1 = -1;
           		}

			if (testReg > 63 && testReg < 123)
			{
				if(testReg == 65 || testReg == 97)
				{
					num1 = A;
				}

                                if(testReg == 66 || testReg == 98)
                                { 
                                        num1= B;
                                }
                                if(testReg == 67 || testReg == 99)
                                { 
                                        num1 = C;
                                }
                                if(testReg == 68 || testReg == 100)
                                { 
                                        num1 = D;
                                }
                                if(testReg == 69 || testReg == 101)
                                { 
                                        num1 = E;
                                }
                                if(testReg == 70 || testReg == 102)
                                { 
                                        num1 = F;
                                }
                                if(testReg == 71 || testReg == 103)
                                { 
                                        num1 = G;
                                }
                                if(testReg == 72 || testReg == 104)
                                { 
                                        num1 = H;
                                }
                                if(testReg == 73 || testReg == 105)
                                { 
                                        num1 = I;
                                }
                                if(testReg == 74 || testReg == 106)
                                { 
                                        num1 = J;
                                }
                                if(testReg == 75 || testReg == 107)
                                { 
                                        num1 = K;
                                }
                                if(testReg == 76 || testReg == 108)
                                { 
                                        num1 = L;
                                }
                                if(testReg == 77 || testReg == 109)
                                { 
                                        num1 = M;
                                }
                                if(testReg == 78 || testReg == 110)
                                { 
                                        num1= N;
                                }
                                if(testReg == 79 || testReg == 111)
                                { 
                                        num1 = O;
                                }
                                if(testReg == 80 || testReg == 112)
                                { 
                                        num1 = P;
                                }
                                if(testReg == 81 || testReg == 113)
                                { 
                                        num1 = Q;
                                }
                                if(testReg == 82 || testReg == 114)
                                { 
                                        num1 = R;
                                }
                                if(testReg == 83 || testReg == 115)
                                { 
                                        num1 = S;
                                }
                                if(testReg == 84 || testReg == 116)
                                { 
                                        num1 = T;
                                }
                                if(testReg == 85 || testReg == 117)
                                { 
                                        num1 = U;
                                }
                                if(testReg == 86 || testReg == 118)
                                { 
                                        num1 = V;
                                }
                                if(testReg == 87 || testReg == 119)
                                { 
                                        num1 = W;
                                }
                                if(testReg == 88 || testReg == 120)
                                { 
                                        num1 = X;
                                }
                                if(testReg == 89 || testReg == 121)
                                { 
                                        num1 = Y;
                                }
                                if(testReg == 90 || testReg == 122)
                                { 
                                        num1 = Z;
                                }

			}

		counter++;          
       		}

		while(stringtmp2[counter2] != '\0')
                {

			testReg2 = (int)stringtmp2[0];
                        if (stringtmp2[0] == '+' && stringtmp2[1] != '\0')
                        {
                                x = strlen(stringtmp2);
                                for (y = 1; y <= x; y++)
                                {
                                        string2[y-1] = stringtmp2[y];
                                        d = atoi(string2);
                                }
                        num2 = d;
                        }

                        if (stringtmp2[0] == '-' && stringtmp2[1] != '\0')
                        {
                                x = strlen(stringtmp2);
                                for (y = 1; y <= x; y++)
                                {
                                        string2[y-1] = stringtmp2[y];
                                        d = atoi(string2);
                                }
                        num2 = -d;
                        }

                        if ((stringtmp2[0] == '0' || stringtmp2[0] == '1' ||stringtmp2[0] ==  
'2' || stringtmp2[0] == '3' ||stringtmp2[0] == '4' ||stringtmp2[0] == '5' ||stringtmp2[0] == '6'
||stringtmp2[0] == '7' ||stringtmp2[0] == '8' ||stringtmp2[0] == '9') && stringtmp2[1] != 
'\0')
                       {
                           x = strlen(stringtmp2);
                           for (y = 0; y <= x; y++)
				{

                                string2[y] = stringtmp2[y];
                                num2 = atoi(string2);

                          	}

                        }

if ((stringtmp2[0] == '0' || stringtmp2[0] == '1' ||stringtmp2[0] ==  '2' || stringtmp2[0] == 
'3' ||stringtmp2[0] == '4' ||stringtmp2[0] == '5' ||stringtmp2[0] == '6'
||stringtmp2[0] == '7' ||stringtmp2[0] == '8' ||stringtmp2[0] == '9') && stringtmp2[1] == 
'\0')
                       {
                                num2 = atoi(stringtmp2);

                        }


                        if (stringtmp2[0] == '+' && stringtmp2[1] == '\0')
                        {
                                num2 = abs(num2);
                        }

                        if (stringtmp2[0] == '-' && stringtmp2[1] == '\0')
                        {
                                num2 = -1 *num2;
                        }
                        counter2++;

			if(testReg2 > 63 && testReg2 < 123)
			{ 
				if(testReg2 == 65 || testReg2 == 97)
                                {
                                        num2 = A;
                                }
                                 
                                if(testReg2 == 66 || testReg2 == 98) 
                                {
                                        num2 = B; 
                                }
                                if(testReg2 == 67 || testReg2 == 99) 
                                {
                                        num2 = C;
                                }
                                if(testReg2 == 68 || testReg2 == 100)
                                {
                                        num2 = D;
                                }
                                if(testReg2 == 69 || testReg2 == 101)
                                {
                                        num2 = E;
                                }
                                if(testReg2 == 70 || testReg2 == 102)
                                {
                                        num2 = F;
                                }
                                if(testReg2 == 71 || testReg2 == 103)
                                {
                                        num2 = G;
                                }
                                if(testReg2 == 72 || testReg2 == 104)
                                {
                                        num2 = H;
                                }
                                if(testReg2 == 73 || testReg2 == 105)
                                {
                                        num2 = I;
                                }
				if(testReg2 == 74 || testReg2 == 106)
                                {
                                        num2 = J;
                                }
                                if(testReg2 == 75 || testReg2 == 107)
                                {
                                        num2 = K;
                                }
                                if(testReg2 == 76 || testReg2 == 108)
                                {
                                        num2 = L;
                                }
                                if(testReg2 == 77 || testReg2 == 109)
                                {
                                        num2 = M;
                                }
                                if(testReg2 == 78 || testReg2 == 110)
                                {
                                        num1= N; 
                                }
                                if(testReg2 == 79 || testReg2 == 111)
                                {
                                        num2 = O;
                                }
                                if(testReg2 == 80 || testReg2 == 112)
                                {
                                        num2 = P;
                                }
				if(testReg2 == 81 || testReg2 == 113)
                                {
                                        num2 = Q;
                                }
                                if(testReg2 == 82 || testReg2 == 114)
                                {
                                        num2 = R;
                                }
                                if(testReg2 == 83 || testReg2 == 115)
                                {
                                        num2 = S;
                                }
                                if(testReg2 == 84 || testReg2 == 116)
                                {
                                        num2 = T;
                                }
                                if(testReg2 == 85 || testReg2 == 117)
                                {
                                        num2 = U;
                                }
                                if(testReg2 == 86 || testReg2 == 118)
                                {
                                        num2 = V;
                                }
                                if(testReg2 == 87 || testReg2 == 119)
                                {
                                        num2 = W;
                                }
				if(testReg2 == 88 || testReg2 == 120)
                                {
                                        num2 = X;
                                }
                                if(testReg2 == 89 || testReg2 == 121)
                                {
                                        num2 = Y;
                                }
                                if(testReg2 == 90 || testReg2 == 122)
                                {
                                        num2 = Z;
                                }
			}



                }






	 while(stringtmp3[counter3] != '\0')
                {
			testReg3 = (int)stringtmp3[0];
                        if (stringtmp3[0] == '+' && stringtmp3[1] != '\0')
                        {
                                x = strlen(stringtmp3);
                                for (y = 1; y <= x; y++)
                                {
                                        string3[y-1] = stringtmp3[y];
                                        d = atoi(string3);
                                }
                        num3 = d;
                        }

                        if (stringtmp3[0] == '-' && stringtmp3[1] != '\0')
                        {
                                x = strlen(stringtmp3);
                                for (y = 1; y <= x; y++)
                                {
                                        string3[y-1] = stringtmp3[y];
                                        d = atoi(string3);
                                }
                        num3 = -d;
                        }

                        if ((stringtmp3[0] == '0' || stringtmp3[0] == '1' ||stringtmp3[0] ==  
'2' || stringtmp3[0] == '3' ||stringtmp3[0] == '4' ||stringtmp3[0] == '5' ||stringtmp3[0] == '6'
||stringtmp3[0] == '7' ||stringtmp3[0] == '8' ||stringtmp3[0] == '9') && stringtmp3[1] != 
'\0')
                       {
                           x = strlen(stringtmp3);
                           for (y = 0; y <= x; y++)
                                {

                                string3[y] = stringtmp3[y];
                                num3 = atoi(string3);

                                }

                        }


if ((stringtmp3[0] == '0' || stringtmp3[0] == '1' ||stringtmp3[0] ==  '2' || stringtmp3[0] == 
'3' ||stringtmp3[0] == '4' ||stringtmp3[0] == '5' ||stringtmp3[0] == '6'
||stringtmp3[0] == '7' ||stringtmp3[0] == '8' ||stringtmp3[0] == '9') && stringtmp3[1] == 
'\0')
                       {
                                num3 = atoi(stringtmp3);

                        }


                        if (stringtmp3[0] == '+' && stringtmp3[1] == '\0')
                        {
                                num3 = abs(num3);
                        }

                        if (stringtmp3[0] == '-' && stringtmp3[1] == '\0')
                        {
                                num3 = -1 *num3;
                        }
                        counter3++;

                }



		if(ret == 1)
		{
			if(stringtmp1[0] == '+')
			{
				acc = acc * num1;
			}
			if(stringtmp1[0] == '-')
			{
				acc = acc * num1;
			}
			if(stringtmp1[0] != '+' && stringtmp1[0] != '-')
			{
				acc = num1;
			}
			if(testReg>63 && testReg <123)
			{
				acc = num1;
			}
			
		}
		
		if(ret == 2)
		{
			if(stringtmp1[0] == '+' && (testReg2 < 64 || testReg2 > 123))
			{
				acc = acc + num2;
			}
			if(stringtmp1[0] == '-' && (testReg2 < 64 || testReg2 > 123))
			{
				acc = acc - num2;
			}
			if(stringtmp1[0] == '*' && (testReg2 < 64 || testReg2 > 123))
			{
				acc = acc * num2;
			}
			if(stringtmp1[0] == '/' && (testReg2 < 64 || testReg2 > 123))
			{
				if((acc%num2) > 0)
				{
				int temp = acc;
				printf("Here. \n");
				float acc = (float)temp/num2;
				printf("%f\n", acc);
				acc = acc;
				}
				else
				{
				acc = acc / num2;
				}
			}
			if(testReg == 64)
			{
				if(testReg2 == 65 || testReg2 == 97)
				{
					A = acc;
				}
                                if(testReg2 == 66 || testReg2 == 98) 
                                {
                                        B = acc;
                                }
                                if(testReg2 == 67 || testReg2 == 99) 
                                {
                                        C = acc;
                                }
                                if(testReg2 == 68 || testReg2 == 100)
                                {
                                        D = acc;
                                }
                                if(testReg2 == 69 || testReg2 == 101)
                                {
                                        E = acc;
                                }
                                if(testReg2 == 70 || testReg2 == 102)
                                {       
                                        F = acc;
                                }
                                if(testReg2 == 71 || testReg2 == 103)
                                {
                                        G = acc;
                                }
                                if(testReg2 == 72 || testReg2 == 104)
                                {
                                        H = acc;
                                }
                                if(testReg2 == 73 || testReg2 == 105)
                                {
                                        I = acc;
                                }
                                if(testReg2 == 74 || testReg2 == 106)
                                {
                                        J = acc;
                                }
                                if(testReg2 == 75 || testReg2 == 107)
                                {
                                        K = acc;
                                }
                                if(testReg2 == 76 || testReg2 == 108)
                                {
                                        L = acc;
                                }
                                if(testReg2 == 77 || testReg2 == 109)
                                {
                                        M = acc;
                                }
                                if(testReg2 == 78 || testReg2 == 110)
                                {
                                        N = acc; 
                                }
                                if(testReg2 == 79 || testReg2 == 111)
                                {
                                        O = acc;
                                }
                                if(testReg2 == 80 || testReg2 == 112)
                                {
                                        P = acc;
                                }
                                if(testReg2 == 81 || testReg2 == 113)
                                {
                                        Q = acc;
                                }
                                if(testReg2 == 82 || testReg2 == 114)
                                {
                                        R = acc;
                                }
                                if(testReg2 == 83 || testReg2 == 115)
                                {
                                        S = acc;
                                }
                                if(testReg2 == 84 || testReg2 == 116)
                                {
                                        T = acc;
                                }
                                if(testReg2 == 85 || testReg2 == 117)
                                {
                                        U = acc;
                                }
                                if(testReg2 == 86 || testReg2 == 118)
                                {
                                        V = acc;
                                }
                                if(testReg2 == 87 || testReg2 == 119)
                                {
                                        W = acc;
                                }
				if(testReg2 == 88 || testReg2 == 120)
                                {       
                                        X = acc;
                                }
                                if(testReg2 == 89 || testReg2 == 121)
                                {
                                        Y = acc;
                                }
                                if(testReg2 == 90 || testReg2 == 122)
                                {
                                        Z = acc;
                                }
                        }
	
			if(testReg2 > 64 && testReg2 < 123)
			{
				if(stringtmp1[0] == '+')
				{
					acc = acc + num2;
				}
				if(stringtmp1[0] == '-')
				{
					acc = acc - num2;
				}
				if(stringtmp1[0] == '*')
				{
					acc = acc * num2;
				}
				if(stringtmp1[0] == '/')
				{
					acc = acc / num2;
				}
			}
		}

		if(ret == 3)
		 {	
                        if(stringtmp2[0] == '+')
                        {
                                acc = num1 + num3;
                        }
                        if(stringtmp2[0] == '-')
                        {
                                acc = num1 - num3;
                        }
                        if(stringtmp2[0] == '*')
                        {
                                acc = num1 * num3;
                        }
                        if(stringtmp2[0] == '/')
                        {
                                acc = num1 / num3;
                        }
			if(testReg > 64 && testReg < 122)
			{
				if(testReg == 65 || testReg == 97)
                            	{
                                    	A = num3;
                            	}

                            	if(testReg == 66 || testReg == 98)
                            	{
                                    	B = num3;
                            	}
                            	if(testReg == 67 || testReg == 99)
                            	{
                                    	C = num3;
                            	}

                            	if(testReg == 68 || testReg == 100)
                            	{
                                    	D = num3;
                            	}
                            	if(testReg == 69 || testReg == 101)
                            	{
                                    	E = num3;
                            	}
                            	if(testReg == 70 || testReg == 102)
                            	{
                                    	F = num3;
                            	}
                            	if(testReg == 71 || testReg == 103)
                            	{
                                    	G = num3;
                            	}
                            	if(testReg == 72 || testReg == 104)
                            	{
                                    	H = num3;
                            	}
                            	if(testReg == 73 || testReg == 105)
                            	{
                                    	I = num3;
                            	}
                            	if(testReg == 74 || testReg == 106)
                            	{
                                    	J = num3;
                            	}
                            	if(testReg == 75 || testReg == 107)
                            	{
                                    	K = num3;
                            	}
                            	if(testReg == 76 || testReg == 108)
                            	{
                                    	L = num3;
                            	}
                            	if(testReg == 77 || testReg == 109)
                            	{
                                    	M = num3;
                            	}
                            	if(testReg == 78 || testReg == 110)
                            	{
                                    	N = num3;
                            	}
                            	if(testReg == 79 || testReg == 111)
                            	{
                                    	O = num3;
                            	}
                            	if(testReg == 80 || testReg == 112)
                            	{
                                    	P = num3;
                            	}
                            	if(testReg == 81 || testReg == 113)
                            	{
                                    	Q = num3;
                            	}

                            	if(testReg == 82 || testReg == 114)
                            	{
                                    	R = num3;
                            	}
                            	if(testReg == 83 || testReg == 115)
                            	{
                                    	S = num3;
                            	}
                            	if(testReg == 84 || testReg == 116)
                            	{
                                    	T = num3;
                            	}
                            	if(testReg == 85 || testReg == 117)
                            	{
                                    	U = num3;
                            	}
                            	if(testReg == 86 || testReg == 118)
                            	{
                                    	V = num3;
                            	}
                            	if(testReg == 87 || testReg == 119)
                            	{
                                    	W = num3;
                            	}
                            	if(testReg == 88 || testReg == 120)
                            	{
                                    	X = num3;
                            	}
                            	if(testReg == 89 || testReg == 121)
                            	{
                                    	Y = num3;
                            	}
                            	if(testReg == 90 || testReg == 122)
                            	{
                                    	Z = num3;
                            	}
			}


               }

		
	printf("%d: ", acc);
	counter = 0;
	counter2 = 0;
	counter3 = 0;
	num1 = 0;
	num2 = 0;
	num3 = 0;
	}

return 0;
}
